home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / glibc108.zip / glibc108 / sysdeps / mach / hurd / statbuf.h < prev    next >
C/C++ Source or Header  |  1994-02-17  |  4KB  |  120 lines

  1. /* Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
  2. This file is part of the GNU C Library.
  3.  
  4. The GNU C Library is free software; you can redistribute it and/or
  5. modify it under the terms of the GNU Library General Public License as
  6. published by the Free Software Foundation; either version 2 of the
  7. License, or (at your option) any later version.
  8.  
  9. The GNU C Library is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12. Library General Public License for more details.
  13.  
  14. You should have received a copy of the GNU Library General Public
  15. License along with the GNU C Library; see the file COPYING.LIB.  If
  16. not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  17. Cambridge, MA 02139, USA.  */
  18.  
  19. #ifndef    _STATBUF_H
  20.  
  21. #define    _STATBUF_H    1
  22.  
  23. #include <gnu/types.h>
  24.  
  25. /* NOTE: The size of this structure (32 ints) is known in
  26.    <hurd/hurd_types.defs>, since it is used in the `io_stat' RPC.  MiG
  27.    does not cope at all well with the passed C structure not being of
  28.    the expected size.  There are some filler words at the end to allow
  29.    for future expansion.  To increase the size of the structure used
  30.    in the RPC and retain binary compatibility, we would need to assign
  31.    a new message number.  */
  32.  
  33. struct stat
  34.   {
  35.     int st_fstype;        /* File system type.  */
  36.     __fsid_t st_fsid;        /* File system ID.  */
  37. #define    st_dev    st_fsid
  38.  
  39.     __ino_t st_ino;        /* File number.  */
  40.     unsigned int st_gen;    /* To detect reuse of file numbers.  */
  41.     __dev_t st_rdev;        /* Device if special file.  */
  42.     __mode_t st_mode;        /* File mode.  */
  43.     __nlink_t st_nlink;        /* Number of links.  */
  44.  
  45.     __uid_t st_uid;        /* Owner.  */
  46.     __gid_t st_gid;        /* Owning group.  */
  47.  
  48.     __off_t st_size;        /* Size in bytes.  */
  49.  
  50.     __time_t st_atime;        /* Access time, seconds */
  51.     unsigned long int st_atime_usec; /* and microseconds.  */
  52.     __time_t st_mtime;        /* Modification time, seconds */
  53.     unsigned long int st_mtime_usec; /* and microseconds.  */
  54.     __time_t st_ctime;        /* Status change time, seconds */
  55.     unsigned long int st_ctime_usec; /* and microseconds.  */
  56.  
  57.     unsigned int st_blksize;    /* Optimal size for I/O.  */
  58.  
  59. #define    _STATBUF_ST_BLKSIZE    /* Tell code we have this member.  */
  60.  
  61.     unsigned int st_blocks;    /* Number of 512-byte blocks allocated.
  62.                    Not related to `st_blksize'.  */
  63.  
  64.     __uid_t st_author;        /* File author.  */
  65.  
  66.     unsigned int st_flags;    /* User-defined flags.
  67.                    High 16 bits can be set only by root.  */
  68.  
  69.     int st_spare[11];        /* Room for future expansion.  */
  70.   };
  71.  
  72. /* Encoding of the file mode.  */
  73.  
  74. #define    __S_IFMT    0170000    /* These bits determine file type.  */
  75.  
  76. /* File types.  */
  77. #define    __S_IFDIR    0040000    /* Directory.  */
  78. #define    __S_IFCHR    0020000    /* Character device.  */
  79. #define    __S_IFBLK    0060000    /* Block device.  */
  80. #define    __S_IFREG    0100000    /* Regular file.  */
  81. #define    __S_IFLNK    0120000    /* Symbolic link.  */
  82. #define    __S_IFSOCK    0140000    /* Socket.  */
  83. #define    __S_IFIFO    0010000    /* FIFO.  */
  84.  
  85. /* Protection bits.  */
  86.  
  87. #define    __S_ISUID    04000    /* Set user ID on execution.  */
  88. #define    __S_ISGID    02000    /* Set group ID on execution.  */
  89. #define    __S_ISVTX    01000    /* Save swapped text after use (sticky).  */
  90. #define    __S_IREAD    00400    /* Read by owner.  */
  91. #define    __S_IWRITE    00200    /* Write by owner.  */
  92. #define    __S_IEXEC    00100    /* Execute by owner.  */
  93.  
  94.  
  95. #ifdef    __USE_GNU
  96. /* If set, there is no benefit in caching the contents of this file.  */
  97. #define S_INOCACHE    000000200000
  98.  
  99. /* If the S_IUSEUNK bit is set, then the S_IUNKNOWN bits (see below)
  100.    control access for unknown users.  If S_IUSEUNK is clear, then unknown
  101.    users are treated as "others" for purposes of access control.  */
  102. #define S_IUSEUNK    000000400000
  103. /* Mask of protection bits for unknown users (no effective IDs at all).  */
  104. #define S_IUNKNOWN      000007000000
  105. /* Shift S_IREAD, S_IWRITE, S_IEXEC left this many bits to produce the
  106.    protection bits for unknown users.  */
  107. #define S_IUNKSHIFT    12
  108.  
  109. /* All the unused bits.  */
  110. #define    S_ISPARE    (~(S_IFMT|S_INOCACHE|S_IUNKNOWN|07777))
  111. #endif
  112.  
  113. /* Default file creation mask (umask).  */
  114. #ifdef    __USE_BSD
  115. #define    CMASK        0022
  116. #endif
  117.  
  118.  
  119. #endif /* statbuf.h */
  120.